(function ($) {
    /*
     * Plugin zUpdateCS
     * Xu ly tac vu voi ajax
     * @author Chuột
     * Version 1.0
     */
    $.fn.zUpdateCS = function (options) {
//=============================================
//Cac gia mac dinh cua doi tuong options
//=============================================
        var defaults = {
            "add": "#add", //id submit form add new
            "edit": "#edit", //id submit form edit
            "delete": ".delete", //class button submit form delete
            "content": "#content", //id tag a delete
            "text": "#text" //id input text
        };
        //Ap dung defaults vao options
        options = $.extend(defaults, options);
        //=============================================
        //Cac bien se su dung trong plugin
        //=============================================
        var add = $(options.add);
        var edit = $(options.edit);
        var del = $(options.delete);
        var content = $(options.content);
        var text = $(options.text);
        //=============================================
        //Khoi tao cac ham can thi khi Plugin duoc su dung
        //=============================================
        init();
        //=============================================
        //Ham khoi dong
        //=============================================
        function init() {
            //Entering text mst
            $(text).focusout(function (e) {
                Load(add, "Cở sở - doanh nghiệp tồn tại trong cơ sở dữ liệu! Tải lên khung thông tin cơ bản thành công.", "Cơ sở - doanh nghiệp không tồn tại trong CSDL.")
                e.stopImmediatePropagation();
                return false;
            });
            //Submiting form add new
            $(add).submit(function (e) {
                Add(add, "Thêm mới cơ sở kiểm tra trong năm thành công!", "Thêm mới cơ sở thất bại!");
                e.stopImmediatePropagation();
                return false;
            });
            //Clicking in tag a delete
            $(del).on("click", function (e) {
                var data = $(this).attr("id");
                var url = $(this).attr("href");
                var page = $(".pagination .active span").text();
                var idnam = $("#year").children(":selected").attr("id");
                var key = $("#searchcs").val();
                if (confirm("Xác nhận xóa cơ sở này ?"))
                {
                    data += "&idnam=" + idnam + "&page=" + page + "&key=" + key;
                    Del(url, data, "Xóa cán bộ hoàn tất! <br/>Cảnh báo: không khuyến khích việc xóa dữ liệu này.", "Xóa thất bại! Do cơ sở này đã xuất hiện trong các đoàn kiểm tra.", content);
                    e.stopImmediatePropagation();
                }
                return false;
            });
        }
        //=============================================
        //Ham xu ly khi co su kien load du lieu len form
        //=============================================
        function Load(form, success, fail)
        {
            var urlsearchcs = $(form).find('input[name="urlsearchcs"]').val();
            var mst = $(form).find('input[name="mst"]').val();
            if (checkMST(mst)) {
                $.ajax(
                        {
                            url: urlsearchcs,
                            type: "post",
                            data: "mst=" + mst,
                            beforeSend: function (request) {
                                return request.setRequestHeader('X-CSRF-Token', $("meta[name='token']").attr('content'));
                            },
                            datatype: "html"
                        }).done(function (data) {
                    if ($.isEmptyObject(data))
                    {
                        toastr.error(fail);
                        $(form).find('input[name="dkkd"]').focus();
                        $(form).find('input[name="idcs"]').val("");
                        $(form).find('input[name="dkkd"]').attr('readonly', false);
                        $(form).find('input[name="tencoso"]').attr('readonly', false);
                        $(form).find('input[name="chucoso"]').attr('readonly', false);
                        $(form).find('textarea[name="diachi"]').attr('readonly', false);
                        $(form).find('input[name="noicap"]').attr('readonly', false);
                        $(form).find('input[name="ngaycap"]').attr('readonly', false);
                    }
                    else {
                        toastr.success(success);
                        $(form).find('input[name="idcs"]').val(data.ID);
                        $(form).find('input[name="dkkd"]').attr('readonly', true);
                        $(form).find('input[name="dkkd"]').val(data.SO_DKKD);
                        $(form).find('input[name="tencoso"]').val(data.TEN_CS);
                        $(form).find('input[name="tencoso"]').attr('readonly', true);
                        $(form).find('input[name="chucoso"]').val(data.CHU_CS);
                        $(form).find('input[name="chucoso"]').attr('readonly', true);
                        $(form).find('textarea[name="diachi"]').val(data.DIA_CHI);
                        $(form).find('textarea[name="diachi"]').attr('readonly', true);
                        $(form).find('input[name="noicap"]').val(data.NOI_CAP);
                        $(form).find('input[name="noicap"]').attr('readonly', true);
                        $(form).find('input[name="ngaycap"]').val(data.NGAY_CAP);
                        $(form).find('input[name="ngaycap"]').attr('readonly', true);
                        $(form).find('textarea[name="dacdiemkd"]').focus();
                    }
                }).fail(function (jqXHR, ajaxOptions, thrownError)
                {
                    toastr.error('No response from server!');
                });
            }
            else {
                toastr.error('Mã số thuế không hợp lệ!<br/> >= 10 Ký tự [A-Za-z0-9]');
            }
        }
        //=============================================
        //Ham xu ly khi co su kien gui du lieu luu
        //=============================================
        function Add(form, success, fail)
        {
            var url = $(form).attr('action');
            var id = $(form).find('input[name="idcs"]').val();
            var mst = $(form).find('input[name="mst"]').val();
            var dkkd = $(form).find('input[name="dkkd"]').val();
            var tencoso = $(form).find('input[name="tencoso"]').val();
            var chucoso = $(form).find('input[name="chucoso"]').val();
            var diachi = $(form).find('textarea[name="diachi"]').val();
            var noicap = $(form).find('input[name="noicap"]').val();
            var ngaycap = $(form).find('input[name="ngaycap"]').val();
            var dacdiemkd = $(form).find('textarea[name="dacdiemkd"]').val();
            var htnopthue = $(form).find('input[name="htnopthue"]').val();
            var nganhnghekd = $(form).find('input[name="nganhnghekd"]').val();
            var ketoantu = $(form).find('input[name="ketoantu"]').val();
            var ketoanden = $(form).find('input[name="ketoanden"]').val();
            var hthachtoan = $(form).find('input[name="hthachtoan"]').val();
            var noidkkekhai = $(form).find('input[name="noidkkekhai"]').val();
            var nam = $(form).find('input[name="nam"]').attr('id');
            if (!checkMST(mst))
            {
                toastr.error('Mã số thuế không hợp lệ!<br/> >= 10 Ký tự [A-Za-z0-9]');
                $(form).find('input[name="mst"]').focus();
            }
            else if (!checkMST(dkkd))
            {
                toastr.error('Số ĐKKD không hợp lệ!<br/> >= 10 Ký tự [A-Za-z0-9]');
                $(form).find('input[name="dkkd"]').focus();
            }
            else if (mst !== dkkd)
            {
                toastr.error('Số DKKD và MST phải trùng nhau!');
                $(form).find('input[name="dkkd"]').focus();
            }
            else if (checkSpecialChar(tencoso))
            {
                toastr.error('Tên cơ sở chứa các ký tự đặc biệt!');
                $(form).find('input[name="tencoso"]').focus();
            }
            else if (checkSpecialChar(chucoso))
            {
                toastr.error('Chủ cơ sở chứa các ký tự đặc biệt!');
                $(form).find('input[name="chucoso"]').focus();
            }
            else if (checkSpecialChar(diachi))
            {
                toastr.error('Địa chỉ cơ sở chứa các ký tự đặc biệt!');
                $(form).find('textarea[name="diachi"]').focus();
            }
            else if (checkSpecialChar(noicap))
            {
                toastr.error('Nơi cấp chứa các ký tự đặc biệt!');
                $(form).find('input[name="noicap"]').focus();
            }
            else if (checkDate(ngaycap))
            {
                toastr.error('Ngày cấp không hợp lệ!');
                $(form).find('input[name="ngaycap"]').focus();
            }
            else if (checkSpecialChar(dacdiemkd))
            {
                toastr.error('Đặc điểm kinh doanh chứa các ký tự đặc biệt!');
                $(form).find('textarea[name="dacdiemkd"]').focus();
            }
            else if (checkSpecialChar(htnopthue))
            {
                toastr.error('Hình thức nộp thuế chứa các ký tự đặc biệt!');
                $(form).find('input[name="htnopthue"]').focus();
            }
            else if (checkSpecialChar(nganhnghekd))
            {
                toastr.error('Ngành nghề kinh doanh chứa các ký tự đặc biệt!');
                $(form).find('input[name="nganhnghekd"]').focus();
            }
            else if (checkDate(ketoantu))
            {
                toastr.error('Ngày bắt đầu kế toán không hợp lệ!');
                $(form).find('input[name="ketoantu"]').focus();
            }
            else if (checkDate(ketoanden))
            {
                toastr.error('Ngày kết thúc kế toán không hợp lệ!');
                $(form).find('input[name="ketoanden"]').focus();
            }
            else if (checkSpecialChar(hthachtoan))
            {
                toastr.error('Hình thức hạch toán chứa các ký tự đặc biệt!');
                $(form).find('input[name="hthachtoan"]').focus();
            }
            else if (checkSpecialChar(noidkkekhai))
            {
                toastr.error('Nơi đăng ký kê khai chứa các ký tự đặc biệt!');
                $(form).find('input[name="noidkkekhai"]').focus();
            }
            else {
                $.ajax(
                        {
                            url: url,
                            type: "post",
                            data: {
                                "id": id,
                                "mst": mst,
                                "dkkd": dkkd,
                                "tencoso": tencoso,
                                "chucoso": chucoso,
                                "diachi": diachi,
                                "noicap": noicap,
                                "ngaycap": ngaycap,
                                "dacdiemkd": dacdiemkd,
                                "htnopthue": htnopthue,
                                "nganhnghekd": nganhnghekd,
                                "ketoantu": ketoantu,
                                "ketoanden": ketoanden,
                                "hthachtoan": hthachtoan,
                                "noidkkekhai": noidkkekhai,
                                "nam": nam
                            },
                            beforeSend: function (request) {
                                return request.setRequestHeader('X-CSRF-Token', $("meta[name='token']").attr('content'));
                            },
                            datatype: "text"
                        }).done(function (result) {
                    if (result === "true")
                    {
                        toastr.success(success);
                        $(form).find('input[name="idcs"]').val("");
                        $(form).find('input[name="mst"]').val("");
                        $(form).find('input[name="dkkd"]').val("");
                        $(form).find('input[name="dkkd"]').attr('readonly', false);
                        $(form).find('input[name="tencoso"]').val("");
                        $(form).find('input[name="tencoso"]').attr('readonly', false);
                        $(form).find('input[name="chucoso"]').val("");
                        $(form).find('input[name="chucoso"]').attr('readonly', false);
                        $(form).find('textarea[name="diachi"]').val("");
                        $(form).find('textarea[name="chucoso"]').attr('readonly', false);
                        $(form).find('input[name="noicap"]').val("");
                        $(form).find('input[name="noicap"]').attr('readonly', false);
                        $(form).find('input[name="ngaycap"]').val("");
                        $(form).find('input[name="ngaycap"]').attr('readonly', false);
                        $(form).find('textarea[name="dacdiemkd"]').val("");
                        $(form).find('input[name="htnopthue"]').val("");
                        $(form).find('input[name="nganhnghekd"]').val("");
                        $(form).find('input[name="ketoantu"]').val("");
                        $(form).find('input[name="ketoanden"]').val("");
                        $(form).find('input[name="hthachtoan"]').val("");
                        $(form).find('input[name="noidkkekhai"]').val("");
                    }
                    else {
                        toastr.error(fail);
                    }
                    $(form).find('input[name="mst"]').focus();
                }).fail(function (jqXHR, ajaxOptions, thrownError)
                {
                    toastr.error('No response from server!');
                });
            }
        }
        //=============================================
        //Ham xoa du lieu
        //=============================================
        //=============================================
        function Del(url, data, success, fail, content)
        {
            $.ajax(
                    {
                        url: url,
                        type: "post",
                        data: data,
                        beforeSend: function (request) {
                            return request.setRequestHeader('X-CSRF-Token', $("meta[name='token']").attr('content'));
                        },
                        datatype: "html"
                    }).done(function (data) {
                if (data !== "")
                {
                    $(content).hide().fadeIn("slow").html(data.html);
                    toastr.warning(success);
                }
                else {
                    toastr.error(fail);
                }
            }).fail(function (jqXHR, ajaxOptions, thrownError)
            {
                toastr.error('No response from server!');
            });
        }
        //Ham cat khoang trang toan chuoi
        //=============================================
        function fulltrim(str)
        {
            return  str.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, '').replace(/\s+/g, ' ');
        }
        //=============================================
        //Ham kiem tra la mst
        //=============================================
        function checkMST(mst)
        {
            var re = /^[A-Za-z0-9]{10,}$/;
            if (mst.match(re))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        //=============================================
        //Ham kiem tra co ky tu dac biet
        //=============================================
        function checkSpecialChar(str)
        {
            var re = /^[^!$&*()/#%@<>'"|\\\\^]+$/;
            if (str.match(re)) {
                return false;
            }
            else {
                return true;
            }
        }
        //=============================================
        //Ham kiem tra ngay
        //=============================================
        function checkDate(date)
        {
            var re = /^\d{2}[./-]\d{2}[./-]\d{4}$/;
            if (date.match(re)) {
                return true;
            }
            else {
                return false;
            }
        }
    };
})(jQuery);